"use strict";

function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.MenuItemWebLayout = MenuItemWebLayout;

var _react = _interopRequireWildcard(require("react"));

var _configContext = require("../../../../extends/configContext");

var _MenuContext = require("../../MenuContext");

var _classnames = _interopRequireDefault(require("classnames"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }

function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function MenuItemWebLayout(props) {
  var style = props.style,
      className = props.className,
      index = props.index,
      disabled = props.disabled,
      divided = props.divided,
      onClick = props.onClick;

  var _useContext = (0, _react.useContext)(_MenuContext.MenuContext),
      currentActiveItemIndex = _useContext.currentActiveItemIndex,
      setCurrentActiveItemIndex = _useContext.setCurrentActiveItemIndex,
      setCurrentActiveSubMenuIndex = _useContext.setCurrentActiveSubMenuIndex,
      multiple = _useContext.multiple,
      currentActiveItemIndexSet = _useContext.currentActiveItemIndexSet,
      setCurrentActiveItemIndexSet = _useContext.setCurrentActiveItemIndexSet,
      currentActiveSubMenuIndexSet = _useContext.currentActiveSubMenuIndexSet,
      setCurrentActiveSubMenuIndexSet = _useContext.setCurrentActiveSubMenuIndexSet;

  var _useContext2 = (0, _react.useContext)(_MenuContext.SubMenuContext),
      subMenuIndex = _useContext2.subMenuIndex;

  var _useContext3 = (0, _react.useContext)(_configContext.ConfigContext),
      clsPrefix = _useContext3.clsPrefix;

  var componentPrefix = "".concat(clsPrefix, "-menu-item");
  var classNameStr = (0, _classnames.default)(componentPrefix, className, {
    'is-disabled': disabled,
    'is-active': multiple ? currentActiveItemIndexSet.has(index) : currentActiveItemIndex === index,
    'is-divided': divided
  });

  var onMenuItemClick = function onMenuItemClick(e) {
    if (!disabled) {
      e.nativeEvent.stopImmediatePropagation(); // 多选模式

      if (multiple) {
        if (currentActiveItemIndexSet.has(index)) {
          currentActiveItemIndexSet.delete(index); // TODO:如果子菜单为空，则清除当前submenu index
        } else {
          currentActiveItemIndexSet.add(index); // 设置submenu index

          currentActiveSubMenuIndexSet.add(subMenuIndex);
          setCurrentActiveSubMenuIndexSet(currentActiveSubMenuIndexSet);
        }

        setCurrentActiveItemIndexSet(currentActiveItemIndexSet);
      } else {
        setCurrentActiveItemIndex(index);
        setCurrentActiveSubMenuIndex(subMenuIndex);
      }

      typeof onClick === 'function' && onClick(index, subMenuIndex, currentActiveItemIndexSet);
    }
  };

  return /*#__PURE__*/_react.default.createElement("li", {
    style: style,
    className: classNameStr,
    onClick: onMenuItemClick
  }, props.children);
}